pals algorithm